From: Keir Fraser Date: Fri, 27 Jun 2008 12:45:55 +0000 (+0100) Subject: x86, shadow: Fix OOS bug on domain teardown. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14192^2~31 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6ee2f5693ff4cd5d9241c625db16887176244e2a;p=xen.git x86, shadow: Fix OOS bug on domain teardown. Signed-off-by: Gianluca Guida --- diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 6979d583c7..34cddea6d7 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -631,6 +631,11 @@ void oos_fixup_remove(struct vcpu *v, mfn_t gmfn) perfc_incr(shadow_oos_fixup_remove); + /* If the domain is dying we might get called when deallocating + * the shadows. Fixup tables are already freed so exit now. */ + if ( d->is_dying ) + return; + idx = mfn_x(gmfn) % SHADOW_OOS_FT_HASH; for_each_vcpu(d, v) { @@ -3168,6 +3173,7 @@ void shadow_teardown(struct domain *d) { free_xenheap_pages(v->arch.paging.shadow.oos_fixups, SHADOW_OOS_FT_ORDER); + v->arch.paging.shadow.oos_fixups = NULL; } {